package com.smart.lib.mapper;

import com.smart.lib.entity.BorrowOrderInfo;
import com.smart.lib.entity.UserBorrowInfo;
import com.smart.lib.entity.UserInfo;
import com.smart.lib.util.Pager;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 学生信息方法接口
 * */
@Mapper
@Component
public interface UserMapper {
    /**
     * 学生读者分页查询
     * 查询字段有 @username,@cardno
     * @return 获取条件查询结果
     * */
    public List<UserInfo> getAllUsersPagerByUsernameOrCardNo(Pager pager);

    /**
     * 学生读者分页查询
     * 查询字段 @username,@cardno
     * @return 获取条件查询数据条数，用于计算分页页码
     * */
    public Integer getAllUsersPagerTotalCountsByUsernameOrCardNo(Pager pager);

    /**
     * 更新用户头像
     * @param userInfo 用户id和头像地址通过对象自动装箱
     * @return 受影响的行数
     */
    public Integer updateUserAvatar(UserInfo userInfo);

    /**
     * 添加新学生信息
     * @param userInfo 包含必要的学生信息和输出参数(cardno, user_id, error)
     * @return 返回error，如果为0则执行成功
     */
    public Integer addNewUserInfo(UserInfo userInfo);

    /**
     * 借阅管理流程中，通过图书证二维码查询当前用户信息
     * 包括用户借阅订单内容
     * 获取个人信息
     * */
    public UserBorrowInfo getUserInfoByCardNo(UserInfo userInfo);

    /**
     * 借阅管理流程中，通过图书证二维码查询当前用户信息
     * 包括用户借阅订单内容
     * 获取当前用户借阅书籍信息
     * */
    public List<BorrowOrderInfo> getUserBorrowingBooksByCardNo(UserInfo userInfo);

    /**
     * 借阅管理流程中，通过图书证二维码查询当前用户信息
     * 包括用户借阅订单内容
     * 获取当前用户借阅数量
     * */
    public Integer getUserBorrowingBookCountsByCardNo(UserInfo userInfo);

    /**
     * 当前学生总数
     * */
    public Integer getUserTotal();

}
